#include <vector>
#include <list>
#include <map>
#include <set>
#include <queue>
#include <deque>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <fstream>
#include <set>
#include "tree.h"

using namespace std;

vector<int> ans;

void getLargestKNum(Tree *root, int &K, vector<int> &ans)
{
    if (!root) return;
    if (root->right) getLargestKNum(root->right, K, ans);
    if (K > 0) ans.push_back(root->data);
    K--;
    if (root->left) getLargestKNum(root->left, K, ans);
}

int main(int argc, char **argv)
{
    int input[] = {7,5,6,3,2,8,10,11,35,56};
    //int input[] = {7};
    Tree *root = NULL, *root2 = NULL;
    vector<Tree *> result;

    for (int i = 0; i < sizeof(input)/sizeof(int); i++) {
        TreeInsert(root, input[i]);
    }

    print_ascii_tree(root);
    vector<int> ans;
    int K = 2;
    getLargestKNum(root, K, ans); 
    for (int i = 0; i < ans.size(); i++) 
	cout << ans[i] << " ";
}
